package com.gzy.cs5.exception;

/**
 * 自定义业务异常类，用于在业务逻辑中抛出特定的错误信息。
 * 该异常类包含一个错误代码（ErrorCode）和一个详细的错误消息。
 */
public class BusinessException extends Exception {
    /**
     * 错误代码，用于标识具体的错误类型。
     */
    private final ErrorCode errorCode;

    /**
     * 详细的错误消息，用于提供更具体的错误信息。
     */
    private final String detailMessage;

    /**
     * 构造函数，使用错误代码初始化异常。
     * 错误消息将从错误代码中获取。
     *
     * @param errorCode 错误代码
     */
    public BusinessException(ErrorCode errorCode) {
        super(errorCode.getMessage());
        this.errorCode = errorCode;
        this.detailMessage = errorCode.getMessage();
    }

    /**
     * 构造函数，使用错误代码和详细的错误消息初始化异常。
     *
     * @param errorCode 错误代码
     * @param detailMessage 详细的错误消息
     */
    public BusinessException(ErrorCode errorCode, String detailMessage) {
        super(detailMessage);
        this.errorCode = errorCode;
        this.detailMessage = detailMessage;
    }

    /**
     * 获取错误代码。
     *
     * @return 错误代码
     */
    public ErrorCode getErrorCode() {
        return errorCode;
    }

    /**
     * 获取详细的错误消息。
     *
     * @return 详细的错误消息
     */
    @Override
    public String getMessage() {
        return detailMessage;
    }
}
